Crate tectonic_io_base
source ·Expand description
Tectonic’s pluggable I/O backend.
This crates defines the core traits and types used by Tectonic’s I/O
subsystem, and provides implementations for common stdlib types. It provides
a simplified I/O model compatible with TeX’s usage patterns, as encapsulated
in the IoProvider
trait. Files are exposed as InputHandle
or
OutputHandle
structs, which add a layer of bookkeeping to allow the
higher levels of Tectonic to determine when the engine needs to be re-run.
Modules§
- Default directories for per-user Tectonic files.
- Helpers to tidy up the computation of digests in various places.
- Tectonic I/O implementations for
std::fs
types. - Tectonic I/O implementations for types provided by
flate2
. - An “I/O stack” is an I/O provider that delegates requests to a series of sub-providers in turn.
- Tectonic I/O trait implementations for the standard I/O streams.
Structs§
- Input handles are basically Read objects with a few extras. We don’t require the standard io::Seek because we need to provide a dummy implementation for GZip streams, which we wouldn’t be allowed to do because both the trait and the target struct are outside of our crate.
- A handle for Tectonic output streams.
Enums§
- What kind of source an input file ultimately came from. We keep track of this in order to be able to emit Makefile-style dependencies for input files. Right now, we only provide enough options to achieve this goal; we could add more.
- A convenience type for file-open operations when “not found” needs to be handled specially.
- Errors that are generic to Tectonic’s framework, but not capturable as IoErrors.
Traits§
- A hack to allow casting of Bundles to IoProviders.
- An extension to the basic Read trait supporting additional features needed for Tectonic’s I/O system.
- A trait for types that can read or write files needed by the TeX engine.
Functions§
- Normalize a TeX path if possible, otherwise return the original path.
- Try to open a file on the fileystem, returning an
OpenResult
type allowing easy handling if the file was not found.